package org.winthedocs.processor;

import org.winthedocs.common.Utils;

import java.io.IOException;
import java.nio.file.Path;
import java.util.List;

/**
 * 检查翻译文件是否和原文一致，
 */
public class CheckTranslation {
    private String srcPath;
    private String transPath;

    private CheckTranslation(String srcPath, String transPath) {
        this.srcPath = srcPath;
        this.transPath = transPath;
    }

    public static CheckTranslation getChecker(String srcPath, String transPath) {
        return new CheckTranslation(srcPath, transPath);
    }

    /**
     * 检查翻译内容是否和原文格式一致：
     * 段落数
     * TODO 标点
     * TODO 关键词数
     * @return
     * @throws IOException
     */
    public boolean check() throws IOException {
        // 1. 读取路径中的所有文件rst和md文件
        List<String> srcFiles = Utils.getFiles(srcPath);
        List<String> dstFiles = Utils.getFiles(transPath);

        srcFiles = Utils.getRelativePath(srcFiles, srcPath);
        dstFiles = Utils.getRelativePath(dstFiles, transPath);


        // 2. 对比md文件和rst文件的段落数是否一致，该功能主要对比翻译是否正确
        for (String fileName : dstFiles) {
            // 判断是否为新增文件
            if (!srcFiles.contains(fileName)) {
                System.out.println("多了文件" + fileName);
                continue;
            }

            Path fullSrcPath = Utils.getFullPath(srcPath, fileName);
            Path fullDstPath = Utils.getFullPath(transPath, fileName);


            // 对比两个文件
            List<String> srcContent = Utils.getContentByParagraph(fullSrcPath);
            List<String> dstContent = Utils.getContentByParagraph(fullDstPath);
            if (srcContent.size() != dstContent.size()) {
                return false;
            }
        }
        return false;
    }
}
